package 鱼塘钓鱼;

import java.util.Arrays;
import java.util.Scanner;


public class Main {
    static int N = 110;
    static int[] a = new int[N];
    static int[] d = new int[N];
    static int[] dist = new int[N];
    static int[] spend = new int[N];

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        for (int i = 1; i <= n; i++) {
            a[i] = in.nextInt();
        }
        for (int i = 1; i <= n; i++) {
            d[i] = in.nextInt();
        }
        for (int i = 1; i < n; i++) {
            dist[i] = in.nextInt();
            dist[i] += dist[i - 1];
        }
        int T = in.nextInt();
        int res = 0;
        for (int i = 1; i <= n; i++) {
            res = Math.max(res, work(i, T - dist[i - 1]));
        }
        System.out.println(res);
    }

    private static int work(int n, int T) {
        Arrays.fill(spend, 0);
        int ret = 0;
        for (int i = 1; i <= T; i++) {
            int t = 1;
            for (int j = 1; j <= n; j++) {
                if (get(j) > get(t)) {
                    t = j;
                }
            }
            ret += get(t);
            spend[t]++;
        }
        return ret;
    }

    private static int get(int i) {
        return Math.max(0, a[i] - d[i] * spend[i]);
    }
}
